﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using EntityFrameworkContrib.PostSharp4EF;
using CyclicReferences.Public;
using EditableBusinessObjects.Postsharp.Public;

namespace EFContrib.PS4EF.Tst.InheritanceTests
{
    [Poco("InheritanceTypeConnection")]
    [CreateSerializeSurrogate("EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF")]
    [DataContract(Namespace = "myNamespace", Name = "Mort")]
    public class Mort : Employee
    {
        [DataMember]
        public string Language { get; set; }
        [DataMember]
        public bool WPF { get; set; }
        [DataMember]
        public bool WCF { get; set; }
        [DataMember]
        public bool WF { get; set; }
        [DataMember]
        public bool EF { get; set; }
    }

    [Poco("InheritanceTypeConnection")]
    [CreateSerializeSurrogate("EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF")]
    [DataContract(Namespace = "myNamespace", Name = "Elvis")]
    public class Elvis : Mort
    {
    }

    [Poco("InheritanceTypeConnection")]
    [CreateSerializeSurrogate("EntityFrameworkContrib.PostSharp4EF.ISerializationHelp, EntityFrameworkContrib.PostSharp4EF")]
    [DataContract(Namespace = "myNamespace", Name = "Einstein")]
    public class Einstein : Elvis
    {
    }





    [EditableBusinessObjectAttribute()]
    [CreateSerializeSurrogate("EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public")]
    [DataContract(Namespace = "myNamespace", Name = "Mort")]
    public class MortClient : EmployeeClient
    {
        [DataMember]
        public string Language { get; set; }
        [DataMember]
        public bool WPF { get; set; }
        [DataMember]
        public bool WCF { get; set; }
        [DataMember]
        public bool WF { get; set; }
        [DataMember]
        public bool EF { get; set; }
    }

    [EditableBusinessObjectAttribute()]
    [CreateSerializeSurrogate("EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public")]
    [DataContract(Namespace = "myNamespace", Name = "Elvis")]
    public class ElvisClient : MortClient
    {
    }

    [EditableBusinessObjectAttribute()]
    [CreateSerializeSurrogate("EditableBusinessObjects.Postsharp.Public.IEditableBusinessObject, EditableBusinessObjects.Postsharp.Public")]
    [DataContract(Namespace = "myNamespace", Name = "Einstein")]
    public class EinsteinClient : ElvisClient
    {
    }

}
